perm filename APP6[AIM,DBL]3 blob sn#126861 filedate 1974-10-29 generic text, type T, neo UTF8
00100	.DEVICE XGP
00200	.FONT 1 "FIX25"
00300	.FONT 2 "SIGN57"
00400	.FONT 3 "SHD40"
00500	.FONT 4 "BDI25"
00600	.FONT 5 "NGB30"
00700	.FONT 6 "NGR20"
00800	.PAGE FRAME 53 HIGH 75 WIDE
00900	.TURN ON "↓_π{"
01000	.TURN ON "\" FOR "%"
01100	.MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200	.MACRO E ⊂ APART END ⊃
01300	.TABBREAK
01400	.EVERY FOOTING(\6Fourth Draft .... {DATE},page A6.{IF PAGE = 1 THEN 1 ELSE PAGE},User/CF Dialogue excerpts\*)
01500	.EVERY HEADING(\3BEINGS\*,,\4Doug Lenat\*)
01600	.COUNT PAGE PRINTING "1"
01700	.NEXT PAGE
01800	
     

00100	\2APPENDIX 6. \* \3CF .... RUNNING\*
00200	.NOFILL
00300	
00400	
00500	
00600	
00700	\5<Here is the synthesized program itself, CF, running.>\*
00800	
00900	←\4ENTER(T)\*
01000	
01100	USER INTERRUPT LEVEL... \40\*
01200	
01300	
01400	\5PUP:\* (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)
01500	
01600	
01700	\5PUP:\* (THE TYPE OF CONCEPT FORMATION PUP IS ABOUT TO WORK ON IS
01800	CLASSIFICATORY:CONCEPT:FORMATION)
01900	
02000	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02100	
02200	\4(ARCH (A B C) (S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))\*
02300	
02400		ARCH
02500		OBJECTS (A B C)
02600		MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
02700	
02800	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02900	
03000	\4(TOWER (A B C D) (S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))\*
03100	
03200		ARCH
03300		OBJECTS (A B C)
03400		MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
03500	
03600		TOWER
03700		OBJECTS (A B C D)
03800		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
03900	
04000	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
04100	
04200	\4(??? (A B C) (S A B) (S C B))\*
04300	
04400	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
04500	     ARCH))
04600	
04700	PLEASE GIVE ME NAME:OF:CLASS
04800	
04900	\4ARCH\*
05000	
05100		ARCH
05200		OBJECTS (A B C)
05300		MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
05400	
05500		TOWER
05600		OBJECTS (A B C D)
05700		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
05800	
05900	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
06000	
06100	\4(??? (A B C) (S A B) (S C B) (BLOCK A) (BLOCK C) (TOUCH A C) (BLOCK B))\*
06200	
06300	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
06400	     ARCH))
06500	
06600	PLEASE GIVE ME NAME:OF:CLASS
06700	
06800	\4NOTHING\*
06900	
07000		ARCH
07100		OBJECTS (A B C)
07200		MUSNT HAVE ((TOUCH A C))
07300		MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
07400	
07500		TOWER
07600		OBJECTS (A B C D)
07700		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
07800	
07900	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
08000	
08100	\4(??? (A B C) (BLOCK A) (BLOCK B) (BLOCK C))\*
08200	
08300	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
08400	     ARCH))
08500	
08600	PLEASE GIVE ME NAME:OF:CLASS
08700	
08800	\4NOTHING\*
08900	
09000		ARCH
09100		OBJECTS (A B C)
09200		MUST HAVE ((S A B))
09300		MUSNT HAVE ((TOUCH A C))
09400		MAY HAVE ((S C B) (BLOCK A) (BLOCK B) (BLOCK C))
09500	
09600		TOWER
09700		OBJECTS (A B C D)
09800		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
09900	
10000	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
10100	
10200	\4(??? (A B C) (BLOCK A) (BLOCK C) (S A B) (BLOCK B))\*
10300	
10400	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
10500	     ARCH))
10600	
10700	PLEASE GIVE ME NAME:OF:CLASS
10800	
10900	\4NOTHING\*
11000	
11100		ARCH
11200		OBJECTS (A B C)
11300		MUST HAVE ((S A B) (S C B))
11400		MUSNT HAVE ((TOUCH A C))
11500		MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
11600	
11700		TOWER
11800		OBJECTS (A B C D)
11900		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
12000	
12100	\5<notice that at this point, the model for ARCH is the usual one>\*
12200	
12300	
12400	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
12500	
12600	\4(??? (A B C) (TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))\*
12700	
12800	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
12900	     TOWER))
13000	
13100	PLEASE GIVE ME NAME:OF:CLASS
13200	
13300	\4ROW\*
13400	
13500		ARCH
13600		OBJECTS (A B C)
13700		MUST HAVE ((S A B) (S C B))
13800		MUSNT HAVE ((TOUCH A C))
13900		MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
14000	
14100		TOWER
14200		OBJECTS (A B C D)
14300		MUST HAVE ((S A B))
14400		MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
14500	
14600		ROW
14700		OBJECTS (A B C)
14800		MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
14900	
15000	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
15100	
15200	\4(ARCH (A B C D) (S A B) (TOUCH A C))\*
15300	
15400		ARCH
15500		OBJECTS (A B C (D))
15600		MUST HAVE ((S A B))
15700		MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
15800	
15900	\5<notice how contradictory user input is handled: features are simply
16000	    transferred from the MUST/MUSTNOT sets to the MAY set>\*
16100	
16200		TOWER
16300		OBJECTS (A B C D)
16400		MUST HAVE ((S A B))
16500		MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
16600	
16700		ROW
16800		OBJECTS (A B C)
16900		MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
17000	
17100	
17200	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
17300	
17400	\4(HALT)\*
17500	
17600	\5PUP:\* (PUP HAS THOUGHT ABOUT THE CLASSIFICATORY:CONCEPT:FORMATION TYPE OF
17700	     CONCEPT:FORMATION)
17800	
17900	
18000	
18100	
18200	FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
18300	
18400	1   EXIT FROM SYSTEM
18500	2   CONTINUE SERVING, AS BEFORE
18600	3   CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
18700	4   REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
18800	
18900	OK, GO .......... \43\*
19000	
19100	USER INTERRUPT LEVEL... \410\*
19200	
19300	\5The user has switched to a mode where he can interrupt after each BEING
19400			gets control, and ask it questions.\*
19500	
19600	DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
19700	
19800	\*REQUEST: \4CH
19900	\*NIL *** SATISFY *** (CF:1)   \5<the control history stack. Note that the
20000						top element is CF:1, not SERVE.>\*
20100	
20200	REQUEST: \4WHAT
20300	\*(SATISFY THE SIMPLE SUBGOAL (AWARE USER (PUP IS ABOUT TO WORK ON 
20400	    						CONCEPT FORMATION)))
20500	REQUEST: \4HOW
20600	\*(PASS CONTROL TO THE SIMPLEST SUFFICIENT BEING)
20700	
20800	REQUEST: \4WHY
20900	\*((AWARE USER (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)) IS A REQUISITE
21000	      	 TO BE SATISFIED)
21100	
21200	REQUEST: \4OLDER
21300	\*CF:1
21400	
21500	REQUEST: \4WHAT
21600	\*(A SPECIALIZED BEING WHICH DOES (LEARN HOW TO IMPOSE A CONCEPT 
21700			STRUCTURING UPON A DOMAIN; LEARN HOW TO CHARACTERIZE,
21800			OR AT LEAST DISTINGUISH, VARIOUS CONCEPTS))
21900	
22000	REQUEST: \4WHY
22100	\*(CONCEPT:LEARNING IS NECESSARY TO CONCEPT KNOWLEDGE, AND CONCEPT:FORMATION
22200	        	IS TOO GENERAL TO USE AS IT IS)
22300	
22400	REQUEST: \4QUIT
22500	
22600	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
22700	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
22800	
22900	\*REQUEST: \4BEING
23000	\*PAD:2
23100	
23200	REQUEST: \4WHAT
23300	\*(A SPECIALIZED BEING WHICH DOES (DIVIDE A DOMAIN INTO SUBDOMAINS; 
23400			USUALLY THESE WILL BE DISJOINT, AND THEIR UNION
23500			WILL BE THE ENTIRE DOMAIN))
23600	
23700	REQUEST: \4WHY
23800	\*(BECAUSE PUP MUST ENCODE A FUNCTION WHICH PARTITIONS A DOMAIN INTO 
23900	   		CLASSES, AND PARTITION:A:DOMAIN IS TOO GENERAL
24000			TO USE AS IT IS)
24100	
24200	REQUEST: \4HOW
24300	\*(BY BUILDING UP THE PARTITION GRADUALLY, BY ADDING TO OUR KNOWLEDGE OF
24400			THE PARTITION ONE PAIR AT A TIME; HERE A
24500			PAIR IS <ELEMENT, CLASS:NAME>)
24600	
24700	REQUEST: \4QUIT
24800	
24900	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
25000	
25100	\*REQUEST: \4CH
25200	\*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
25300	
25400	REQUEST: \4WHY
25500	\*(PUP WANTS ELEMENT:4 ,AND WE DON'T HAVE TO DO ANY COMPUTING TO GET IT 
25600			AND TAKE:HOLD:OF IS TOO GENERAL TO USE AS
25700			IT IS)
25800	
25900	REQUEST: \4HOW
26000	\*(LOOK AROUND A LITTLE; IF IT ISNT FOUND TRIVIALLY, THEN ASK THE USER 
26100			TO GIVE ELEMENT:4 TO US)
26200	
26300	REQUEST: \4AFFECTS
26400	\*((ELEMENT:4 POSSIBLE CALLED)
26500	 (ELEMENT:OBJECTS:11 POSSIBLE CALLED)
26600	 (ELEMENT:CLASSNAME:13 POSSIBLE CALLED)
26700	 (ELEMENT:RELNS:15 POSSIBLE CALLED))
26800	
26900	REQUEST: \4QUIT
27000	
27100	
27200	\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
27300	
27400	\4(??? (A B) (BLOCK A]\*
27500	
27600	DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
27700	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
27800	
27900	\*REQUEST: \4CH
28000	\*NIL *** SOME:PART:OF:14 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
28100	
28200	REQUEST: \4WHAT
28300	\*(A SPECIALIZED BEING WHICH DOES (THIS IS A DESTRUCTIVE FUNCTION; IT 
28400			BREAKS A PIECE OFF OF (??? (A B) (BLOCK A))))
28500	
28600	REQUEST: \4WHY
28700	\*(ONLY PART OF (??? (A B) (BLOCK A)) IS DESIRED AT THIS POINT, AND
28800			SOME:PART:OF IS TOO GENERAL TO USE AS IT IS)
28900	
29000	REQUEST: \4META:CODE
29100	\*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
29200								       EVAL ARG1)) 
29300	       (CAR ARG1))
29400	
29500	REQUEST: \4QUIT
29600	
29700	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
29800	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
29900	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
30000	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
30100	
30200	\*REQUEST: \4CH
30300	\*NIL *** FOREACH:17 *** (GET:HOLD:OF:8 PAD:2 CF:1)
30400	
30500	REQUEST: \4WHAT
30600	\*(A SPECIALIZED BEING WHICH DOES (GO THROUGH THE KNOWN SPACE OF POSSIBLE
30700			NAMES:OF:CLASS ,WHICH IS 
30800			SET:OF:POSSIBLE:NAMES:OF:CLASS ,AND PERFORM 
30900			(TEST:18 POSSIBLE:NAME:OF:CLASS
31000	       		         (COMMENT FOR SATISFACTION OF GOAL CRITERIA))
31100			ON EACH, UNTIL SOME SPECIFIED TERMINATION 
31200			CONDITION IS REACHED))
31300	
31400	REQUEST: \4QUIT
31500	
31600	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
31700	
31800	\*REQUEST: \4BEING
31900	\*TEST:18
32000	
32100	REQUEST: \4WHAT
32200	\*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ARCH MEETS 
32300			THE DESIRED CONDITIONS (COMMENT FOR SATISFACTION
32400			OF GOAL CRITERIA)))
32500	
32600	REQUEST: \4QUIT
32700	
32800	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
32900	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
33000	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
33100	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
33200	
33300	\*REQUEST: \4CH
33400	\*NIL *** COMPARE:26 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 
33500					PAD:2 CF:1)
33600	
33700	REQUEST: \4WHAT
33800	\*(A SPECIALIZED BEING WHICH DOES (COMPARE ((S A B) (BLOCK A) (BLOCK B) 
33900						    (BLOCK C) (TOUCH A C) (S C B)) 
34000			WITH 
34100				((BLOCK A))))
34200	
34300	REQUEST: \4WHY
34400	\*(PUP WANTS TO SEE IF ((S A B) (BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C)
34500			S C B)) IS CLOSE ENOUGH TO ((BLOCK A))
34600			AND COMPARE IS TOO GENERAL TO USE AS IT IS)
34700	
34800	REQUEST: \4QUIT
34900	
35000	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
35100	
35200	\*REQUEST: \4CH
35300	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 
35400					GET:HOLD:OF:8 PAD:2 CF:1)
35500	
35600	REQUEST: \4WHAT
35700	\*(A SPECIALIZED BEING WHICH DOES (SEE IF (S A B) IS IN CONTRADICTION TO
35800			THE COLLECTION ((BLOCK A))))
35900	
36000	REQUEST: \4HOW
36100	\*(SEE HOW A (S A B) TYPE OF ARG1 CAN BE CONTRADICTORY, THEN EXAMINE THE
36200			RELATIONSHIP BETWEEN (S A B) AND ((BLOCK A)))
36300	
36400	REQUEST: \4QUIT
36500	
36600	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
36700	
36800	\*REQUEST: \4CH
36900	\*NIL *** JOIN:23 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 PAD:2
37000				     CF:1)
37100	
37200	REQUEST: \4QUIT
37300	
37400	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
37500	
37600	\*REQUEST: \4CH
37700	\*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
37800	
37900	REQUEST: \4QUIT
38000	
38100	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
38200	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
38300	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
38400	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
38500	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
38600	
38700	\*REQUEST: \4CH
38800	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 
38900					GET:HOLD:OF:8 PAD:2 CF:1)
39000	
39100	REQUEST: \4META:CODE
39200	\*(PROGN 
39300	   (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS RELATION)
39400	   (COMMENT IN ALL CALLS TO DATE, ARG2 IS 
39500				          INSTANTIATED AS ELEMENT:RELNS:15) 
39600	   (COND ((MEMBER ARG1 YES:RELNS:28)
39700	          (COMMENT ARG1 OCCURS WITH PROBABILITY 1, SO IT HAD
39800	                     BETTER BE IN ARG2, THE RELEVANT PIECE OF THE WORLD)
39900	          (NOT (MEMBER ARG1 ARG2)))
40000	         ((MEMBER ARG1 NO:RELNS:29)
40100	          (COMMENT SINCE ARG1 SHOULD NEVER OCCUR, WE HAVE A 
40200	                     CONTRADICTION IFF IT IS A MEMBER OF ARG2)         
40300	          (MEMBER ARG1 ARG2))
40400	         (T (COMMENT WE MAY OR MAY NOT HAVE ARG1 IN ARG2;  EITHER
40500				CASE IS ALLOWABLE; SO WE NEVER HAVE A
40600	                        CONTRADICTION) 
40700	           NIL)))
40800	
40900	
41000	REQUEST: \4QUIT
41100	
41200	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
41300	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
41400	
41500	\*REQUEST: \4CH
41600	\*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
41700	
41800	REQUEST: \4WHAT
41900	\*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ROW MEETS THE
42000			DESIRED CONDITIONS (COMMENT FOR SATISFACTION
42100			OF GOAL CRITERIA)))
42200	
42300	REQUEST: \4QUIT
42400	
42500	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
42600	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
42700	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
42800	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
42900	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
43000	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
43100	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
43200	
43300	\*REQUEST: \4CH
43400	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 
43500					GET:HOLD:OF:8 PAD:2 CF:1)
43600	
43700	REQUEST: \4WHAT
43800	\*(A SPECIALIZED BEING WHICH DOES (SEE IF (BLOCK A) IS IN CONTRADICTION 
43900			TO THE COLLECTION ((BLOCK A))))
44000	
44100	REQUEST: \4QUIT
44200	
44300	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
44400	
44500	\*REQUEST: \4CH
44600	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 
44700					GET:HOLD:OF:8 PAD:2 CF:1)
44800	
44900	REQUEST: \4WHAT
45000	\*(A SPECIALIZED BEING WHICH DOES (SEE IF (RED B) IS IN CONTRADICTION TO
45100			THE COLLECTION ((BLOCK A))))
45200	
45300	REQUEST: \4QUIT
45400	
45500	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
45600	
45700	
45800	\*(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS 
45900			IS ROW))
46000	
46100	DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
46200	
46300	\*REQUEST: \4CH
46400	\*NIL *** ASK:USER:ABOUT:60 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
46500	
46600	REQUEST: \4WHAT
46700	\*(A SPECIALIZED BEING WHICH DOES (ASK THE USER TO RESOLVE DECISION
46800			INVOLVING NAME:OF:CLASS))
46900	
47000	REQUEST: \4WHY
47100	\*(BECAUSE PUP CANNOT RESOLVE IT, BUT MUST AT THIS TIME AND ASK:USER:ABOUT
47200			IS TOO GENERAL TO USE AS IT IS)
47300	
47400	REQUEST: \4HOW
47500	\*(ASK THE USER WHAT THE RESOLUTION IS)
47600	
47700	REQUEST: \4META:CODE
47800	\*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
47900								  NAME:OF:CLASS)) 
48000	       (PRIN1 
48100		     "
48200		      PLEASE GIVE ME ") 
48300	       (PRINT ARG1) 
48400	       (SET ARG1 (READ)))
48500	
48600	
48700	REQUEST: \4QUIT
48800	\*
48900	
49000	
49100	PLEASE GIVE ME NAME:OF:CLASS
49200	
49300	\4NOTHING\*
49400	
49500	DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
49600	
49700	\*REQUEST: \4CH
49800	\*NIL *** MODIFY:STRUCTURE:9 *** (PAD:2 CF:1)
49900	
50000	REQUEST: \4WHAT
50100	\*(A SPECIALIZED BEING WHICH DOES (MODIFY THE STRUCTURE CONTAINING 
50200						"NOTHING" AS AN ELEMENT))
50300	
50400	REQUEST: \4QUIT
50500	
50600	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
50700	
50800	\*REQUEST: \4BEING
50900	\*CONDITIONAL:INSERTION:44
51000	
51100	REQUEST: \4QUIT
51200	
51300	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
51400	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
51500	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
51600	
51700	\*REQUEST: \4CH
51800	\*NIL *** COMPLEX:ALTERATION:46 *** (COMPLEX:ALTERATION:45
51900				             MODIFY:STRUCTURE:9 PAD:2 CF:1)
52000	
52100	REQUEST: \4WHAT
52200	\*(A SPECIALIZED BEING WHICH DOES (ALTER ROW AND/OR ANOTHER ELEMENT OF 
52300						THE SAME OUTER LIST))
52400	
52500	REQUEST: \4WHY
52600	\*(BECAUSE MODIFYING THE STRUCTURE OF AN INDIVIDUAL ELEMENT IS EQUIVALENT
52700			TO UPDATING OUR DESCRIPTION OF A SINGLE
52800			PARTICULAR CONCEPT, AND THIS IS FUNDAMENTAL
52900			TO A DECENT CONCEPT FORMATION
53000			PROGRAM, AND COMPLEX:ALTERATION IS TOO GENERAL
53100			TO USE AS IT IS)
53200	
53300	REQUEST: \4HOW
53400	\*(BY MODIFYING THE STRUCTURE OF SUCH AN ELEMENT)
53500	
53600	REQUEST: \4OLDER
53700	\*COMPLEX:ALTERATION:45
53800	
53900	REQUEST: \4CH
54000	\*(COMPLEX:ALTERATION:46) *** COMPLEX:ALTERATION:45 *** (MODIFY:STRUCTURE:9
54100								  PAD:2 CF:1)
54200	
54300	REQUEST: \4QUIT
54400	
54500	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
54600	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
54700	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
54800	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
54900	
55000	\*REQUEST: \4CH
55100	\*NIL *** IS:OF:TYPE:61 *** (PAD:2 CF:1)
55200	
55300	REQUEST: \4WHAT
55400	\*(A SPECIALIZED BEING WHICH DOES (SEE IF ARG IS OF THE TYPE SPECIFIED. 
55500			THE PARTICULAR TYPE IS DELINEATED BY THE SPECIAL
55600			KNOWLEDGE:  (COMMENT BREAKAWAY)))
55700	
55800	REQUEST: \4META:CODE
55900	\*(EQUAL NAME:OF:CLASS HALT)
56000	
56100	REQUEST: \4QUIT
56200	
56300	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
56400	
56500	\*REQUEST: \4CH
56600	\*NIL *** FOREACH *** (PAD:2 CF:1)
56700	
56800	REQUEST: \4WHAT
56900	\*(GO THROUGH THE KNOWN SPACE OF NAMES,
57000			WHICH IS SET:OF:POSSIBLE:NAMES:OF:CLASS,
57100	                AND PERFORM 
57200			(PROGN (PRINT NAME)
57300	   		       (COND ((GETP NAME CLASS:OBJECTS:33) 
57400				      (PRIN1 "OBJECTS ") 
57500				      (PRINT (GETP NAME
57600				                   CLASS:OBJECTS:33))))
57700	 		       (COND ((GETP NAME CLASS:YES:RELNS:35)
57800				      (PRIN1 "MUST HAVE ") 
57900	  			      (PRINT (GETP NAME 
58000					           CLASS:YES:RELNS:35)))) 
58100			       (COND ((GETP NAME CLASS:NO:RELNS:36)
58200				      (PRIN1 "MUSNT HAVE ") 
58300				      (PRINT (GETP NAME 
58400					           CLASS:NO:RELNS:36))))
58500			       (COND ((GETP NAME CLASS:MAYBE:RENS:37)
58600				      (PRIN1 "MAY HAVE ") 
58700				      (PRINT (GETP NAME 
58800					           CLASS:MAYBE:RELNS:37)))) 
58900			       (TERPRI) 
59000			       T) 
59100			ON EACH, UNTIL
59200			SOME SPECIFIED TERMINATION CONDITION IS REACHED)
59300	
59400	
59500	REQUEST: \4QUIT
59600	\*
59700	
59800		ARCH
59900		OBJECTS (A B C (D))
60000		MUST HAVE ((S A B))
60100		MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
60200	
60300		TOWER
60400		OBJECTS (A B C D)
60500		MUST HAVE ((S A B))
60600		MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
60700	
60800		ROW
60900		OBJECTS (A B C)
61000		MUST HAVE ((TOUCH A C))
61100		MAY HAVE ((TOUCH B C) (BLOCK A) (RED B))
61200	
61300	
61400	DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
61500	
61600	\*REQUEST: \4SET:OF:POSSIBLE:NAMES:OF:CLASS
61700	\*(ARCH TOWER ROW)
61800	
61900	REQUEST: \4CH
62000	\*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
62100	
62200	REQUEST: \4WHAT
62300	\*(A SPECIALIZED BEING WHICH DOES (TAKE THE ARG1 ELEMENT:4 IN A TRIVIAL 
62400			WAY; EITHER BY ACCESSING IT OR BY READING
62500			IT IN))
62600	
62700	REQUEST: \4QUIT
62800	
62900	
63000	\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
63100	
63200	\4(??? (A B C) (BLOCK A) (BLOCK B]\*
63300	
63400	
63500	DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
63600	
63700	\*REQUEST: \4ELEMENT:4
63800	\*(??? (A B C) (BLOCK A) (BLOCK B))
63900	
64000	REQUEST: \4CH
64100	\*NIL *** SOME:PART:OF:12 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
64200	
64300	REQUEST: \4QUIT
64400	
64500	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
64600	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
64700	 .
64800	 .
64900	 .
65000	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
65100	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
65200	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
65300	\*
65400	
65500	
65600	(COMMENT I MUST TELL YOU (COMMENT I GIVE UP))
65700	
65800	 .
65900	 .
66000	 .
66100	
66200	REQUEST: \4CH
66300	\*NIL *** SIMPLE:COMPARE:FN:43 *** (BETTER:38 CONDITIONAL:INSERTION:55 
66400					MODIFY:STRUCTURE:42 COMPLEX:ALTERATION:45 
66500					MODIFY:STRUCTURE:9 PAD:2 CF:1)
66600	
66700	REQUEST: \4WHAT
66800	\*(A SPECIALIZED BEING WHICH DOES (QUASI-COMPARISON WHICH ALWAYS RETURNS
66900	     A CONSTANT VALUE))
67000	
67100	REQUEST: \4WHY
67200	\*(BECAUSE ORDERING ISNT VERY IMPORTANT HERE, AND SIMPLE:COMPARE:FN IS 
67300			TOO GENERAL TO USE AS IT IS)
67400	
67500	REQUEST: \4QUIT
67600	
67700	\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YYES
67800	\*
67900	WRONG;  TYPE  YES   OR    NO   ......... INTERRUPT? \4YES
68000	
68100	\*REQUEST: \4CH
68200	\*NIL *** BETTER:38 *** (CONDITIONAL:INSERTION:55 MODIFY:STRUCTURE:42 
68300				COMPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
68400				CF:1)
68500	
68600	REQUEST: \4EXPLICIT:ARGS
68700	\*(B1 B2)
68800	
68900	REQUEST: \4B1
69000	\*(S A B)
69100	
69200	REQUEST: \4B2
69300	\*(S C D)
69400	
69500	REQUEST: \4OLDER
69600	\*CONDITIONAL:INSERTION:55
69700	
69800	REQUEST: \4CH
69900	\*(BETTER:38) *** CONDITIONAL:INSERTION:55 *** (MODIFY:STRUCTURE:42 
70000				COMPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
70100				CF:1)
70200	
70300	REQUEST: \4WHAT
70400	\*(A SPECIALIZED BEING WHICH DOES (PERHAPS WE WILL STICK IN A 
70500			((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C)) -TYPE
70600			ELEMENT INTO ITS PARENT
70700	                STRUCTURE))
70800	
70900	REQUEST: \4META:CODE
71000	\*(PROGN 
71100	   (SETQ RESULT:7 (LIST:JOIN RESULT:5 RESULT:6 
71200	                            (SETDIFFERENCE ELEMENT:RELNS:15
71300	                                     (APPEND (GETP NAME:OF:CLASS 
71400	                                                   CLASS:YES:RELNS:35) 
71500	                                             (GETP NAME:OF:CLASS 
71600							   CLASS:NO:RELNS:36) 
71700						     (GETP NAME:OF:CLASS
71800	           					   CLASS:MAYBE:RELNS:37))
71900		))) 
72000	   NIL 
72100	   (COND
72200	     (RESULT:7 
72300	      (PUT NAME:OF:CLASS
72400		   CLASS:MAYBE:RELNS:37 
72500		   (MERGE:IN RESULT:7 
72600			     (GETP NAME:OF:CLASS
72700				   CLASS:MAYBE:RELNS:37)
72800			     BETTER:38)))
72900	     (T (SETQ RESULT:7 NIL))))
73000	
73100	
73200	REQUEST: \4RESULT:7
73300	\*((S A B))
73400	
73500	REQUEST: \4RESULT:6
73600	\*NIL
73700	
73800	REQUEST: \4RESULT:5
73900	\*((S A B))
74000	
74100	REQUEST: \4(GETP NAME:OF:CLASS CLASS:MAYBE:RELNS:37]
74200	\*((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
74300	
74400	REQUEST: \4QUIT
74500	 .
74600	 .
74700	 .
74800	\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
74900	
75000	\4(HALT)\*
75100	
75200	
75300	
75400	FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
75500	
75600	1   EXIT FROM SYSTEM
75700	2   CONTINUE SERVING, AS BEFORE
75800	3   CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
75900	4   REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
76000	
76100	OK, GO .......... \41\*
76200	
76300	"EXITING SYSTEM"
76400	
76500	\5<end of session with the synthesized program>\*
76600	
76700	←\4SET:OF:POSSIBLE:NAMES:OF:CLASS\*
76800	(ARCH TOWER ROW HALT)
76900	
77000	←\4CDR(ARCH)\*
77100	(CLASS:OBJECTS:33   (A B C (D))    
77200	 CLASS:CLASSNAME:34 ARCH
77300	 CLASS:YES:RELNS:35 ((S A B))    
77400	 CLASS:NO:RELNS:36  NIL 
77500	 CLASS:MAYBE:RELNS:37 ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B)))